/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufrn.dca.controle;

/**
 * Reponsavél pela sintonia de controlador PID pelo método de Cohen-Coon
 *
 * @author allan
 */
public class cohenCoon {
    /**
     * Constante dada por alpha=(kp*L)/T
     */
    private double alpha;
    /**
     * Ganho proporcional
     */
    private double kc;
    /**
     * Constante de tempo integrativo
     */
    private double ti;
    /**
     * Constante de tempo derivativo
     */
    private double td;
    /**
     * Constande dada por t=L/(L+T)
     */
    private double t;

    /**
     *  
     * @param kp ganho estatico da planta
     * @param L delay
     * @param T tao
     */
    public cohenCoon(double kp, double L, double T) {
        alpha = (kp * L) / T;
        t = L / (L + T);      
        kc = (1.35 / alpha) * (1 + ((0.18 * t) / (1 - t)));
        ti = ((2.5 - 2 * t) / (1 - 0.39 * t)) * L;
        td = ((0.37 * (1 - t)) / (1 - 0.81 * t)) * L;
    }

    /**
     * Retorna o ganho derivativo Kd = kc*td
     *
     * @return
     */
    public double Kd() {
        return td;
    }

    /**
     * Retorna o ganho integral Ki = kc/ti
     *
     * @return
     */
    public double Ki() {
        return (1 / ti);
    }

    /**
     * Retorna o ganho proporcional Kp = kc
     *
     * @return
     */
    public double Kp() {
        return kc;
    }
}
